From: Zhigang Wang Date: Thu, 9 Feb 2012 18:41:03 +0000 (+0000) Subject: libxl: fix bootloader args setting X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks://%22Dat/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22Dat?a=commitdiff_plain;h=6f77e95164674e38738bbd55572555d49657c76a;p=xen.git libxl: fix bootloader args setting When bootloader_args = ['foo', 'bar'], then info->u.pv.bootloader_args = foo\0 bar\0 \0 Before this patch, 'p++' points to the next character of 'foo\0' and never comes to 'bar\0' (because of the '\0' in 'foo\0'), so the args will be: args[0] = 'oo\0' args[1] = 'o\0' After this patch, 'p++' points to the next string of pv.bootloader_args, so we get the correct args: args[0] = 'foo\0' args[1] = 'bar\0' Signed-off-by: Zhigang Wang Acked-by: Ian Jackson Committed-by: Ian Jackson --- diff --git a/tools/libxl/libxl_bootloader.c b/tools/libxl/libxl_bootloader.c index 2da1d90f34..907c871f65 100644 --- a/tools/libxl/libxl_bootloader.c +++ b/tools/libxl/libxl_bootloader.c @@ -49,9 +49,11 @@ static char **make_bootloader_args(libxl__gc *gc, flexarray_set(args, nr++, libxl__sprintf(gc, "--output-directory=%s", "/var/run/libxl/")); if (info->u.pv.bootloader_args) { - char *p = info->u.pv.bootloader_args[0]; - while (*(p++)) - flexarray_set(args, nr++, p); + char **p = info->u.pv.bootloader_args; + while (*p) { + flexarray_set(args, nr++, *p); + p++; + } } flexarray_set(args, nr++, disk);